\documentclass[xcolor=dvipsnames]{beamer}

\usecolortheme[named=OliveGreen]{structure} 

\usetheme[height=7mm]{Rochester}
\usepackage[utf8x]{inputenc}
\usepackage{default}
\author{Kevin Greene}


\title [GNU] % short title
{GNU}

\subtitle
{The Duke Nukem of Operating Systems}

\author[COMP 374] % (short authors list)
{Kevin Greene}


\begin{document}

\begin{frame}
 \titlepage
\begin{center}

  \includegraphics[width=0.45\textwidth]{GnuPenguin.jpg} 

\end{center}
\end{frame}

\begin{frame}
\frametitle{Overview} 

\begin{itemize}
 \item The GNU operating system is comprised of several separate projects.

\begin{itemize}
 \item gcc
 \item GNOME
 \item GNU Make
 \item emacs
 \item HURD
 \item glibc
 \item Versions of nearly all other tools provided by Unix, as well as some extensions.
 \item Lots of things beginning with the letter g (over a quarter of their packages)
\end{itemize}
\end{itemize}



\end{frame}

\begin{frame}

\frametitle{History}
 
\begin{itemize}
 


\item GNU is the brainchild of Richard Stallman, and his organization the Free Software foundation.

\item It was originally conceived in 1983.

\item Arose from the need of a completely Unix-compatable system, but composed entirely of free software.

\item GNU is a recursive acronym, something Richard Stallman appears to be a very big fan of, standing for ``GNU's Not Unix.''


\end{itemize}

\begin{center}
  \includegraphics[width=0.45\textwidth]{Stallman.jpg} 
\end{center}
\end{frame}

\begin{frame}

\frametitle{Userland}
 
\begin{itemize}

\item GNU's userland is something that is present in nearly every GNU/Linux distribution, using the packages that were previously discussed.

\item GNOME is the most recognizable, which recently radically changed it's look in GNOME 3.

\item Overall, the userland is essentially the same as standard GNOME Linux distributions.
\end{itemize}

\end{frame}

\begin{frame}
\frametitle{GNOME 2 vs GNOME 3}  

  \includegraphics[width=0.45\textwidth]{Gnome2.png} 
  \includegraphics[width=0.55\textwidth]{Gnome3.png} 


\end{frame}



\begin{frame}
\frametitle{HURD} 
\begin{itemize}

\item The kernel of GNU is HURD, which is another recursive algorithm, except this time doubly so.

\item HURD = HIRD of Unix-replacing daemons

\item HIRD = HURD of interfaces representing depth

\item This kernel is the primary thing holding back GNU from being a completely workable operating system.

\end{itemize}


\begin{center}	
   \includegraphics[width=0.2\textwidth]{boxes.png} 

\end{center}



\end{frame}

\begin{frame}
\frametitle{HURD Details} 



\begin{itemize}

\item HURD is a essentially a microkernel, as opposed to a monolithic kernel, making it much more similar to MINIX than Linux.

\item HURD utilizes Mach, a microkernel developed at Carnegie Melon University. 
While some other offshoots of HURD exist, the official kernel is still Mach-based. 

\item Designed to bring together several different, independently written parts of the kernel, abstracting the interfaces away.


\end{itemize}

\end{frame}

\begin{frame}
\frametitle{HURD vs Linux}

\begin{itemize}


\item In addition to the benefits of a microkernel vs a monolithic kernel, HURD long proposed two primary benefits.

\begin{itemize}
 \item Transparent ftp integration: interact with files via ftp the same way one would interact with local files.
 \item Personal file system: 
\end{itemize}

\item While Linux has implemented these options through extensions in recent years, 
HURD is still thought to be superior, as it integrates the features entirely, instead of tacking on support.

\end{itemize}

\end{frame}

\begin{frame}
 \frametitle{Support}

\begin{itemize}

\item Currently, the biggest thing holding HURD back is the lack of driver support.

\item Most driver support is actually just takes the Linux drivers (regardless of how good they are originally) and modifies them to fit GNU HURD.

\item Primary file system support is ext2, and it is recommended all work is done in this filesystem.

\item Funnily enough, I found the only good support for GNU/HURD visual environments was using basic X, no GNOME available.

\end{itemize}


\end{frame}

\begin{frame}
 \frametitle{Features}

\begin{itemize}
 \item HURD has preliminary support for pthreads, which is vital for most applications used on GNU/Linux distributions.

 \item The scheduler HURD uses is similar to the Linux scheduler, the biggest difference being the user ids (HURD processes can have more than one, or no, users).

 \item The most interesting aspect to me is that the architecture is based on a server-client model. 
  This allows each driver to be a server running in the userspace, instead of the kernel space.

\end{itemize}


\end{frame}



\begin{frame}
\frametitle{Variations}
\begin{itemize}

\item Currently, there is preliminary support for GNU HURD in a number of distributions that already integrate the GNU userland with the Linux kernel.
\begin{itemize}
 \item Debian
 \item Arch
 \item Gentoo
\end{itemize}
 
\item Of these, Debian has the most support, and plans to release their next cycle with full HURD support.

\item In addition, there is a pure GNU operating system, but it is also still in alpha, and 
if one is looking to get a working system up with GNU, it's recommended to use one of the previously mentioned distributions.

\end{itemize}

\end{frame}

\begin{frame}
\frametitle{The future of GNU and HURD}

\begin{itemize}
 \item GNU userland has thrived with the backing of Linux, and despite issues with the latest GNOME, 
most lower level tools will remain common in all GNU / Linux distributions.

\item I feel the HURD has a long way to go, but provides a great opportunity for people interested in kernel development to actual take part in something, as opposed
      to a much more stable kernel like Linux.

\item Richard Stallman says he was ``not very optimistic about the GNU Hurd. It makes some progress,
 but to be really superior it would require solving a lot of deep problems"

\item If one was looking to contribute, unless you were sold on developing the kernel, I
  would strongly recommend working on some of the other tools GNU provides, such as gcc or glibc.

\item If you are interested, Google Summer of Code has supported GNU HURD for a few years, and I'd encourage you to apply.
\end{itemize}
 

\end{frame}


\begin{frame}
 \frametitle{Questions?}

\begin{center}
  \includegraphics[width=0.6\textwidth]{GNU.png} 
\end{center}

\end{frame}



\end{document}
